package com.tmt.im.manager.controller.vo;

import com.fasterxml.jackson.annotation.JsonProperty;
import io.swagger.v3.oas.annotations.media.Schema;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.Getter;
import lombok.Setter;
import org.apache.ignite.cache.query.annotations.QuerySqlField;

import java.io.Serial;
import java.io.Serializable;

/**
 * @Description TODO
 * @Author wuyi
 * @Date 2024/8/23 10:43
 * @Version 1.0
 **/
@Getter
@Setter
@Tag(name = "用户基本对象", description = "登录后获取的用户基本对象")
public class UserInfoVoEx implements Serializable {

    @Serial
    private static final long serialVersionUID = 4504876175267757215L;

    @Schema(description = "用户ID, 也是云信用户ID")
    @JsonProperty("userId")
    private Long id;

    @Schema(description = "用户账号")
    private String username;

    @Schema(description = "昵称")
    private String nickname;

    @Schema(description = "用户编号")
    private String memberCode;

    @Schema(description = "用户头像URL地址")
    private String avatar;

    @Schema(description = "手机号码，全局唯一")
    @JsonProperty("phoneNo")
    private String mobile;

    @Schema(description = "用户二维码URL地址")
    private String qrCodeUrl;

    @Schema(description = "用户等级")
    private int grade;

    /**
     * 云信令牌
     */
    @Schema(description = "云信令牌")
    private String imToken;

    /**
     * 是否已实名
     */
    @Schema(description = "是否已实名")
    private boolean verified;

    /**
     * 个性签名
     */
    @Schema(description = "个性签名")
    private String introduce;

    /**
     * APP背景图片
     */
    @Schema(description = "APP背景图片URL")
    private String backImage;

    /**
     * 是否开启新消息通知
     */
    @Schema(description = "是否开启了新消息通知，也即关闭了免打扰")
    @JsonProperty("allDisturb")
    private String enableNewMsgNotify;

    /**
     * 新消息到达是否有声音提示。
     */
    @Schema(description = "新消息到达是否有声音提示")
    @JsonProperty("sound")
    private boolean enableSoundHint;

    /**
     * 新消息到达是否有震动提示。
     */
    @Schema(description = "新消息到达是否有震动提示")
    @JsonProperty("shake")
    private boolean enableShockHint;

    /**
     * 是否允许其他人加我好友。
     */
    @Schema(description = "是否允许其他人加我好友")
    private boolean enableAddFriend;

    /**
     * 是否异地登录
     */
    @Schema(description = "是否异地登录")
    private boolean offsiteLogin;

    @Schema(description = "身份证姓名")
    private String certName;

    @Schema(description = "身份证号")
    private String certNo;

}
